There are numerous devices in the market that use real-time operating systems. The operating systems may generally be divided into hard real-time systems and soft real-time systems. Soft real-time systems, such as BSD, LINUX, VXWORKS, and SOLARIS, typically use priority-based scheduling to schedule the tasks, which may be done on a preemptive or non-preemptive basis. In preemptive systems, a thread is forcibly removed from a processor when the timeslot for the thread expires. In non-preemptive systems, threads run a predetermined time and then yield and go to the end of the queue. These models are not precise and may potentially cause deadline misses. Other newly developed methods, for example, EDF, pfair, etc., are too complicated and deemed impractical.